<?php
//phpmyadmin common.inc.php
if(!defined('E_DEPRECATED')) {
	define('E_DEPRECATED', 8192);
}

/**
* json_encode
*/
if (!function_exists('json_encode')) {
     function format_json_value(&$value)
    {
        if(is_bool($value)) {
            $value = $value?'true':'false';
        }elseif(is_int($value)) {
            $value = intval($value);
        }elseif(is_float($value)) {
            $value = floatval($value);
        }elseif(defined($value) && $value === null) {
            $value = strval(constant($value));
        }elseif(is_string($value)) {
            $value = '"'.addslashes($value).'"';
        }
        return $value;
    }

    function json_encode($data)
    {
        if(is_object($data)) {
            //对象转换成数组
            $data = get_object_vars($data);
        }else if(!is_array($data)) {
            // 普通格式直接输出
            return format_json_value($data);
        }
        // 判断是否关联数组
        if(empty($data) || is_numeric(implode('',array_keys($data)))) {
            $assoc  =  false;
        }else {
            $assoc  =  true;
        }
        // 组装 Json字符串
        $json = $assoc ? '{' : '[' ;
        foreach($data as $key=>$val) {
            if(!is_null($val)) {
                if($assoc) {
                    $json .= "\"$key\":".json_encode($val).",";
                }else {
                    $json .= json_encode($val).",";
                }
            }
        }
        if(strlen($json)>1) {// 加上判断 防止空数组
            $json  = substr($json,0,-1);
        }
        $json .= $assoc ? '}' : ']' ;
        return $json;
    }
}

/**
* json_decode
*/
if (!function_exists('json_decode')) {
    function json_decode($json,$assoc=false)
    {
        // 目前不支持二维数组或对象
        $begin  =  substr($json,0,1) ;
        if(!in_array($begin,array('{','[')))
            // 不是对象或者数组直接返回
            return $json;
        $parse = substr($json,1,-1);
        $data  = explode(',',$parse);
        if($flag = $begin =='{' ) {
            // 转换成PHP对象
            $result   = new stdClass();
            foreach($data as $val) {
                $item    = explode(':',$val);
                $key =  substr($item[0],1,-1);
                $result->$key = json_decode($item[1],$assoc);
            }
            if($assoc)
                $result   = get_object_vars($result);
        }else {
            // 转换成PHP数组
            $result   = array();
            foreach($data as $val)
                $result[]  =  json_decode($val,$assoc);
        }
        return $result;
    }
}

/**
* property_exists php5.1.0+
*/
if (!function_exists('property_exists')) {
    function property_exists($class, $property) {
        if (is_object($class))
         $class = get_class($class);
        return array_key_exists($property, get_class_vars($class));
    }
}

/**
* str_getcsv PHP5.3.0+
*/
if(!function_exists('str_getcsv')) {
	function str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = '\\') {
		$fp = fopen('php://memory', 'r+');
		fwrite($fp, $input);
		rewind($fp);
		$data = fgetcsv($fp, 0, $delimiter, $enclosure);
		fclose($fp);
		return $data;
	}
}

/**
* lc_first PHP5.3.0+
*/
if(!function_exists('lc_first')) {
	function lc_first($str) {
		return strtolower(substr($str, 0, 1)) . substr($str, 1);
	}
}

/**
* htmlspecialchars_decode PHP5.1.0+
*/
if(!function_exists('htmlspecialchars_decode')) {
	//[2010-11-27 定义函数的时候也要考虑它用到的常量]
	defined('ENT_COMPAT') || define('ENT_COMPAT', 2);
	defined('ENT_QUOTES') || define('ENT_QUOTES', 3);
	defined('ENT_NOQUOTES') || define('ENT_NOQUOTES', 0);
	
	function htmlspecialchars_decode($str, $quote_style = ENT_COMPAT) {
		$search_arr = array('&lt;', '&gt;', '&amp;');
		$replace_arr = array('<', '>', '&');
		if($quote_style !== ENT_NOQUOTES) {
			$search_arr[] = '&quot;';
			$replace_arr[] = '"';
		}
		if($quote_style === ENT_QUOTES) {
			$search_arr[] = '&#039;';
			$replace_arr[] = '\'';
		}
		return str_ireplace($search_arr, $replace_arr, $str);
	}
}

/**
* fputcsv PHP5.3.0+
*/
if(!function_exists('fputcsv')) {
	function fputcsv($handle, $fields = array(), $delimiter = ',', $enclosure = '"') {
	
	}
}